/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package modelo;

import java.util.Observable;

/**
 * En esta clase se ejecutan las propiedades de comunicacion entre los diversos elementos de el programa
 * se transporta informacion y se trasporta igualmente imagenes para los componentes que las necesiten
 * 
 * @author Agustin Ramirez Hernadnez
 */
public class ImagenObservable extends Observable{
    /**
     * Se agrega una imagen a memori
     */
    public static final int AGREGAR_IMAGEN=0;
    /**
     * Se indica cual ventana este siedo usada, con su respectiva imagen
     */
    public static final int VENTANA_IMAGEN_FOCUS=1;
    /**
     * Para dar por echo que una imagen seleccionada ha cambiado
     */
    public static final int PONER_IMAGEN_MODIFICADA=2;
    /**
     * Avisa que la imagen esta lista para se guardada
     */
    public static final int GUARDAR_IMAGEN_MODIFICADA=3;

    private Imagen imagen;
    private int quePaso;
    private String info;
    private String infoAdicional;
    private int valorAdicional;
    private double valorAdicionalD;
    /**
     * Ponemos que el observable a cambiado y avisara a todos los observer que puea utilizar
     * alguna de las acciones de aqui
     * @param quePaso Es el parametro de que tipo de accion ocurrio
     */
    public void setQuePaso(int quePaso){
        this.quePaso=quePaso;
        this.setChanged();
        this.notifyObservers(imagen);
    }
    /**
     * Regresa la imagen que se ha agregado al observable para su transpote
     * @return Una imagen transportada
     */
    public Imagen getImagen() {
        return imagen;
    }
    /**
     * Se agrega una imagen al observable para ser transportada cuando se ejecute un quepaso
     * con parametro Agregar_Imagen
     * @param imagen imagen que se agregara a la lista
     */
    public void setImagen(Imagen imagen) {
        this.imagen = imagen;
    }
    /**
     * Pregunta al observable cual fue la situacion que lo genero
     * @return Una situacion de las que ImagenObservable contiene
     */
    public int getQuePaso() {
        return quePaso;
    }
    /**
     * Regresa una unformacion adicional que puede ser utilizada por alguno de los Observers
     * @return La infrmacion posible a ser utilizada
     */
    public String getInfo() {
        return info;
    }
    /**
     * Se agrega informacion adicional para poder ser utilizada poteriormente
     * @param info Informacion que se agregara
     */
    public void setInfo(String info) {
        this.info = info;
    }
    /**
     * Regresa el valor adicional previamente agregado el cual puede ser utilizado como informacion
     * para diversas operaciones
     * @return Valor enter para operaciones
     */
    public int getValorAdicional() {
        return valorAdicional;
    }
    /**
     * Se pone un valor entero adicional para poder ser usado en operaciones en imagenes
     * @param valorAdicional Valor que se pondra
     */
    public void setValorAdicional(int valorAdicional) {
        this.valorAdicional = valorAdicional;
    }
    /**
     * Regresa un valor double ya que algunas operaciones en las imageneces necesitan un double
     * @return Valor double para operaciones
     */
    public double getValorAdicionalD() {
        return valorAdicionalD;
    }/**
     * Se pone un valor entero adicional para poder ser usado en operaciones en imagenes
     * @param valorAdicionalD Valor double que se usara
     */
    public void setValorAdicionalD(double valorAdicionalD) {
        this.valorAdicionalD = valorAdicionalD;
    }

    public String getInfoAdicional() {
        return infoAdicional;
    }

    public void setInfoAdicional(String infoAdicional) {
        this.infoAdicional = infoAdicional;
    }
    
}
